package dxf.entities;

import dxf.DXFElement;
import dxf.annotations.DXFProperty;

/**
 * Definisce le informazioni di base di una Entity DXF
 *
 * @author Andrea Zonca
 * @author Michele Brignoli
 * @version 2.0
 */
public abstract class Entity implements DXFElement {

	@DXFProperty(5)
	private Integer handle;

	@DXFProperty(100)
	private String classMarker="AcDbEntity";

	@DXFProperty(8)
	private String layerName = "Default";

	@DXFProperty(6)
	private	String lineTypeName = "BYLAYER";

	@DXFProperty(62)
	private int colorNumber = 0;

	@DXFProperty(48)
	private Double lineTypeScale = 1.0;

	/**
	 * Restituisce l'handle di un elemento DXF
	 * @return l'handle
	 */
	public Integer getHandle() {
		return handle;
	}

	/**
	 * Restituisce il classMarker di un elemento DXF
	 * @return il classMarker
	 */
	public String getClassMarker(){
		return classMarker;
	}

	/**
	 * imposta l'handle di un elemento DXF
	 * @param handle
	 */
	public void setHandle(Integer handle) {
		this.handle = handle;
	}

	/**
	 * Restituisce il layerName
	 * @return il layerName
	 */
	public String getLayerName() {
		return layerName;
	}

	/**
	 * Imposta il layerName
	 * @param layerName il layerName
	 */
	public void setLayerName(String layerName) {
		this.layerName = layerName;
	}

	/**
	 * Restituisce il LineTypeName
	 * @return il LineTypeName
	 */
	public String getLineTypeName() {
		return lineTypeName;
	}

	/**
	 * Imposta il LineTypeName
	 * @param lineTypeName il LineTypeName
	 */
	public void setLineTypeName(String lineTypeName) {
		this.lineTypeName = lineTypeName;
	}

	/**
	 * Restituisce il ColorNumber
	 * @return il colorNumber
	 */
	public int getColorNumber() {
		return colorNumber;
	}

	/**
	 * Imposta il colorNumber
	 * @param colorNumber il codice del colore
	 */
	public void setColorNumber(int colorNumber) {
		this.colorNumber = colorNumber;
	}

	/**
	 * Restituisce la LineTypeScale
	 * @return la lineTypeScale
	 */
	public Double getLineTypeScale() {
		return lineTypeScale;
	}

	/**
	 * Imposta la LineTypeScale
	 * @param lineTypeScale la lineTypescale
	 */
	public void setLineTypeScale(Double lineTypeScale) {
		this.lineTypeScale = lineTypeScale;
	}

	/**
	 * restituisce l'EntityMarker
	 * @return l'entityMarker
	 */
	public abstract String getEntityMarker();

}
